package org.domain.sigepac.repository.impl;

import java.util.Collections;
import java.util.List;

import org.domain.sigepac.Entity.Curso;
import org.domain.sigepac.Entity.TipoCurso;
import org.domain.sigepac.repository.RepositorioCurso;
import org.domain.sigepac.repository.RepositorioGenerico;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.security.Identity;



/**
 * @author bruno.canto
 */
@Name("repositorioCurso")
@AutoCreate
public class RepositorioCursoImpl extends RepositorioGenerico<Curso>
    implements RepositorioCurso {

	@In Identity identity;

	@SuppressWarnings("unchecked")
	public List<Curso> pesquisarPorNome(String nome) {
		try {
			return (List<Curso>) this.entityManager.createQuery(
					"from Curso as curso where upper(curso.nome) like ?")
					.setParameter(1,"%"+nome.toUpperCase()+"%").getResultList();

		} catch (Exception e) {
			return Collections.EMPTY_LIST;
		}
	}

	public List<Curso> listarAlfabetizacao() {
		return listarPorTipo(TipoCurso.ALFABETIZACAO);
	}

	public List<Curso> listarInclusao() {
		return listarPorTipo(TipoCurso.INCLUSAO_DIGITAL);
	}

	private List<Curso> listarPorTipo(TipoCurso tipo){
		return listarPorAtributo("tipo", tipo);
	}

	@Override
	public List<Curso> listar() {

		if(identity.hasRole("Auxiliar"))
			return listarPorAtributo("tipo", TipoCurso.INCLUSAO_DIGITAL);

		return super.listar();
	}

}
